/******************************************************************************* * Copyright (c) 2008 Ralf Ebert * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Ralf Ebert - initial API and implementation *******************************************************************************/ package com.swtxml.ide.newwizard; import org.eclipse.core.runtime.IStatus; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.ui.wizards.NewTypeWizardPage; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import com.swtxml.views.SwtXmlComposite; import com.swtxml.views.SwtXmlDialog; import com.swtxml.views.SwtXmlEditorPart; import com.swtxml.views.SwtXmlTitleAreaDialog; import com.swtxml.views.SwtXmlViewPart; import com.swtxml.views.SwtXmlWindow; import com.swtxml.views.SwtXmlWizardPage; public class SwtXmlNewPage extends NewTypeWizardPage { private Class<?>[] swtXmlClasses = new Class<?>[] { SwtXmlComposite.class, SwtXmlDialog.class, SwtXmlEditorPart.class, SwtXmlTitleAreaDialog.class, SwtXmlViewPart.class, SwtXmlWindow.class, SwtXmlWizardPage.class }; public SwtXmlNewPage() { super(true, "New SWT/XML Class"); setTitle("New SWT/XML Class"); } public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, SWT.NONE); composite.setFont(parent.getFont()); int nColumns = 4; composite.setLayout(new GridLayout(nColumns, false)); createContainerControls(composite, nColumns); createPackageControls(composite, nColumns); createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); Label type = new Label(composite, SWT.NONE); type.setText("Base class:"); Composite group = new Composite(composite, SWT.NONE); group.setLayout(new RowLayout()); SelectionAdapter selectSuperClassListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Object data = ((Button) e.widget).getData(); String classname = ((Class<?>) data).getName(); setSuperClass(classname, false); } }; for (Class<?> clazz : swtXmlClasses) { Button btn = new Button(group, SWT.RADIO); btn.setText(clazz.getSimpleName().replace("SwtXml", "")); btn.setData(clazz); btn.addSelectionListener(selectSuperClassListener); if (SwtXmlComposite.class.equals(clazz)) { btn.setSelection(true); setSuperClass(SwtXmlComposite.class.getName(), false); } } setControl(composite); } public void init(IStructuredSelection selection) { IJavaElement jelem = getInitialJavaElement(selection); initContainerPage(jelem); initTypePage(jelem); doStatusUpdate(); } private void doStatusUpdate() { updateStatus(new IStatus[] { fContainerStatus, fPackageStatus, fTypeNameStatus }); } @Override protected void handleFieldChanged(String fieldName) { super.handleFieldChanged(fieldName); doStatusUpdate(); } }